#pragma once
#include <Rz/Object.h>
#include <Rz/Graphics/Math/Projection.h>
#include "Node.h"

namespace Rz { namespace Graphics { namespace Scene {

class CameraNode :
	public Node
{
	public:
		RZ_RTTI(Rz::Graphics::Scene, CameraNode);
		RZ_RTTI_IMPLEMENTS(Node);
		RZ_RTTI_END;

		CameraNode()
			: Node(NodeType::Camera)
		{

		}

		CameraNode(const Math::Projection& projection)
			: Node(NodeType::Camera)
			, _projection(projection)
		{

		}

		const Node* GetTarget() const { return _target; }
		void SetTarget(Node* target) { _target = target; }

		const Math::Projection& GetProjection() const { return _projection; }
		void SetProjection(const Math::Projection& projection) { _projection = projection; }

	private:
		Math::Projection	_projection;
		Ptr<Node>			_target;
};

} } } 
